Sécurisez vos dépendances indirectes avec Snyk
Snyk Open Source détecte et corrige les vulnérabilités dans les dépendances directes et indirectes.
Ce rapport évalue le taux d’adoption des outils, pratiques et technologies de sécurité, et se penche sur l’impact de l’automatisation et de l’intelligence artificielle (IA) sur le développement logiciel.
Première partie
Plus le code est modifié fréquemment, plus le risque qu’il contienne des vulnérabilités dans sa chaîne d’approvisionnement est important et plus les corrections doivent être déployées rapidement. Nous avons constaté que 80 % des entreprises livrent du code tous les jours ou toutes les semaines, signe probable d’une popularité grandissante des architectures de code modulaires, basées sur des applications et bibliothèques open source. Or, la complexité et les dépendances de ces composants imposent des mises à jour constantes. D’après notre enquête, 66 % des entreprises sont capables de corriger les vulnérabilités open source critiques dans la journée, et 27 % en quelques heures. Des progrès sont encore possibles, car seulement 27 % des entreprises auditent leur code en continu afin d’y détecter des vulnérabilités, quand 28 % procèdent à des audits quotidiens. Les audits continus ou très fréquents renforcent la sécurité face au nombre sans cesse plus important de vulnérabilités zero-day.
Quotidienne
134
Hebdomadaire
199
Mensuelle
53
Trimestrielle
14
NSP
4
Les cyberattaques ont beau être chaque année plus nombreuses et se concentrer toujours plus sur le code open source, beaucoup des entreprises que nous avons interrogées n’utilisent toujours pas les deux technologies les plus importantes pour la sécurité de la chaîne d’approvisionnement, à savoir l’analyse de la composition des logiciels (SCA) pour les dépendances open source et les tests de sécurité des applications statiques (SAST) pour les implémentations non publiques de code open source et propriétaire. Les mesures de sécurité cloud-native, comme les vérifications de la configuration des outils d’infrastructure en tant que code et l’analyse des secrets, sont encore moins répandues.
300
200
100
0
0
100
200
300
Analyse de la composition des logiciels (SCA)
Analyse du code statique/Tests de sécurité des applications statiques (SAST)
Gestion automatisée des paquets
Analyse des dépendances
Analyse des licences
Gestion des secrets
Vérifications de la configuration
Aucun de ces processus
Analyse de la composition des logiciels (SCA)
Analyse du code statique/Tests de sécurité des applications statiques (SAST)
Gestion automatisée des paquets
Analyse des dépendances
Analyse des licences
Gestion des secrets
Vérifications de la configuration
Aucun de ces processus
La vérification de la posture de sécurité des paquets open source est essentielle pour maintenir la sécurité de la chaîne d’approvisionnement logicielle. Les systèmes automatisés qui vérifient que les paquets respectent les meilleures pratiques, comme Snyk Advisor ou OpenSSF Scorecard, constituent le moyen le plus fiable d’analyser le risque de manière programmatique. Pourtant, ces systèmes sont les moins utilisés dans cette optique. Seules 40 % des personnes interrogées utilisent Snyk Advisor, et 34 % des scores de sécurité.
De manière assez étonnante, seuls 52 % des participants à notre enquête affirment vérifier que tous les paquets qu’ils utilisent bénéficient d’une politique de « divulgation responsable », un point pourtant incontournable.
300
200
100
0
0
100
200
300
J’utilise les informations du registre ou du package manager
J’utilise un outil comme Snyk Advisor
Je consulte les évaluations des dépôts ou les statistiques de téléchargement des paquets
Je regarde la fréquence des versions/commits/etc.
Je vérifie que le projet est soutenu par une communauté active
Je vérifie que le projet suit une politique de divulgation responsable (p. ex. SECURITY.md)
Je vérifie le score de sécurité
Je ne vérifie pas la sécurité des paquets open source
J’utilise les informations du registre ou du package manager
J’utilise un outil comme Snyk Advisor
Je consulte les évaluations des dépôts ou les statistiques de téléchargement des paquets
Je regarde la fréquence des versions/commits/etc.
Je vérifie que le projet est soutenu par une communauté active
Je vérifie que le projet suit une politique de divulgation responsable (p. ex. SECURITY.md)
Je vérifie le score de sécurité
Je ne vérifie pas la sécurité des paquets open source
Une des grandes difficultés que pose la sécurité open source réside dans la surveillance des dépendances des paquets et bibliothèques. Les entreprises ont bien compris que le suivi des dépendances est un maillon central de la sécurité : 67 % d’entre elles utilisent un outil comme Snyk pour suivre à la fois leurs dépendances directes et indirectes. 25 % ne suivent que les dépendances directes. Le suivi des dépendances indirectes offre une vision plus complète et précise de la surface d’attaque et met régulièrement en évidence des failles de sécurité de la chaîne d’approvisionnement jusque-là cachées. Bien souvent, il est difficile de corriger ces faiblesses, car ces dépendances imbriquées sont intégrées dans des paquets et bibliothèques open source gérés par des parties sans connexion immédiate avec la dépendance directe.
Non
23
Dépendances directes uniquement
103
Dépendances directes et indirectes
270
Je ne sais pas
8
De nombreuses entreprises souhaitant améliorer de manière proactive la sécurité de leur code et réduire le nombre de vulnérabilités qui s’y sont glissées au cours du développement cherchent à impliquer davantage les développeurs dans la sécurité (stratégie shift-left)t . Cette stratégie optimise la vitesse et l’efficacité du cycle du développement logiciel, car moins de builds sont bloquées lors des tests pré-déploiement et renvoyées aux développeurs pour correction. Pourtant, elle n’est que partiellement mise en place. Seules 40 % des personnes interrogées affirment que leur entreprise déploie des outils de sécurité au sein de ses environnements de développement, et elles sont encore moins nombreuses à les utiliser en local sur la ligne de commande. Le plus souvent, les outils de sécurité sont intégrés aux outils de build et dépôts de code, cités tous deux par 65 % des répondants.
300
200
100
0
0
100
200
300
IDE
CLI
Système de build
Vérifications avant commit
Dépôt de code
Pipeline CI/CD
Je ne sais pas
IDE
CLI
Système de build
Vérifications avant commit
Dépôt de code
Pipeline CI/CD
Je ne sais pas
Snyk Open Source détecte et corrige les vulnérabilités dans les dépendances directes et indirectes.
Deuxième partie
Les réponses à notre enquête indiquent que cette crise est bien réelle et a des conséquences variées pour les entreprises. Une grande majorité des répondants a rencontré un ou plusieurs problèmes en lien avec la chaîne d’approvisionnement l’année dernière. 53 % ont dû corriger au moins une vulnérabilité, et 61 % ont déployé de nouveaux outils et meilleures pratiques de sécurisation du code open source et de la chaîne d’approvisionnement. Ces chiffres montrent que beaucoup d’entreprises ne se décident à agir que lorsqu’une attaque les touche directement.
250
200
150
100
50
0
0
50
100
150
200
250
Nous avons dû corriger une ou plusieurs vulnérabilités de la chaîne d’approvisionnement
Nous avons mis en place de nouveaux outils et pratiques pour mieux gérer les vulnérabilités de la chaîne d’approvisionnement
Nous avons formé notre équipe de développement pour l’aider à mieux comprendre les vulnérabilités de la chaîne d’approvisionnement
Nous n’avons pas été touchés par des vulnérabilités de la chaîne d’approvisionnement logicielle open source l’année passée
Nous avons dû corriger une ou plusieurs vulnérabilités de la chaîne d’approvisionnement
Nous avons mis en place de nouveaux outils et pratiques pour mieux gérer les vulnérabilités de la chaîne d’approvisionnement
Nous avons formé notre équipe de développement pour l’aider à mieux comprendre les vulnérabilités de la chaîne d’approvisionnement
Nous n’avons pas été touchés par des vulnérabilités de la chaîne d’approvisionnement logicielle open source l’année passée
Ce chiffre est en ligne avec celui de la réponse globale apportée à Log4Shell, qui a vraiment poussé les entreprises à réagir efficacement. En réaction à cet incident, 63 % des personnes interrogées expliquent que leur entreprise a augmenté la fréquence d’analyse du code, 59 % que de nouveaux outils ont été déployés et 53 % que la formation de leurs équipes de développement aux pratiques de codage sécurisées a été renforcée. Log4Shell semble aussi avoir amélioré la cyberhygiène de la plupart des entreprises. Ainsi, 58 % des répondants affirment appliquer les corrections requises plus rapidement en raison de la prise de conscience créée par cette attaque. Cet incident a plongé les entreprises dans le chaos, le temps qu’elles puissent identifier leurs expositions imbriquées et les corriger, mais son impact paraît finalement positif sur le long terme. En effet, les équipes ont musclé leurs pratiques de sécurité, au moins en partie à cause de lui.
300
200
100
0
0
100
200
300
Augmentation de la fréquence des analyses du code
Formation supplémentaire des équipes de développement
Application plus rapide des correctifs
Nouveaux outils de sécurité
Aucun de ces processus
Augmentation de la fréquence des analyses du code
Formation supplémentaire des équipes de développement
Application plus rapide des correctifs
Nouveaux outils de sécurité
Aucun de ces processus
L’adoption des meilleures pratiques de sécurisation de la chaîne d’approvisionnement logicielle reste hétérogène. Seules 53 % des entreprises ont mis en place un programme officiel à cet effet. Il est possible que la sécurité de la chaîne d’approvisionnement soit considérée comme un composant des pratiques générales en matière de sécurité, mais ce chiffre pose néanmoins question. La sécurité de la chaîne d’approvisionnement est-elle vraiment devenue un sujet pressant pour les entreprises, ou tout au moins suffisamment important pour mériter une réflexion et une planification à l’échelle d’un programme ? Pour entrer dans le détail de ces pratiques, seules 42 % des entreprises utilisent des nomenclatures de logiciels (SBOM), 58 % déploient des signatures pour l’attribution du code et 62 % mettent en place un processus d’assurance du cycle de vie logiciel (comme le SLSA).
300
200
100
0
0
100
200
300
Programme formel de sécurité de la chaîne d’approvisionnement logicielle
SBOM
SLSA
Signature du code
Audits réguliers
Aucun de ces processus
Programme formel de sécurité de la chaîne d’approvisionnement logicielle
SBOM
SLSA
Signature du code
Audits réguliers
Aucun de ces processus
Il est clair que l’utilité des SBOM commence à être comprise par les ingénieurs et les équipes de sécurité. 42 % des personnes interrogées les utilisent déjà, et 31 % prévoient de le faire sous peu, des chiffres qui laissent entrevoir une croissance impressionnante. Les répondants ont également expliqué qu’ils créent leurs SBOM à partir de différents outils de développement logiciel et de CI/CD, mais aussi avec des systèmes dédiés à la sécurité de la chaîne d’approvisionnement. Cette diversité peut s’expliquer par la fragmentation technologique des SBOM. En effet, deux normes s’affrontent encore (Cyclone et SPDX) et aucune forme d’interopérabilité ne fait consensus. Ce secteur est donc probablement fragmenté et déconnecté, riche en incohérences. Si les SBOM sont généralement créées à partir des analyses de code et d’outils de sécurité (68 %), les outils de build (58 %), les outils de CI/CD (45 %) et les outils dédiés de sécurité de la chaîne d’approvisionnement (53 %) sont aussi utilisés à cette fin.
300
200
100
0
0
100
200
300
Outils CI/CD
Outils de build
Outils d’analyse du code et de sécurité
Outil dédié à la sécurité de la chaîne d’approvisionnement
Aucun de ces processus
Outils CI/CD
Outils de build
Outils d’analyse du code et de sécurité
Outil dédié à la sécurité de la chaîne d’approvisionnement
Aucun de ces processus
87 % des personnes que nous avons interrogées ont été victimes de problèmes en lien avec la sécurité de leur chaîne d’approvisionnement. Sécurisez la vôtre avec Snyk.
Troisième partie
Les outils de génération de code basés sur l’IA sont omniprésents : 92 % des entreprises sont en train de les déployer. 76,5 % des personnes interrogées jugent que ces outils ont amélioré la sécurité du code de leur entreprise. Elles ne sont que 14,9 % à affirmer que l’IA a introduit « beaucoup » de vulnérabilités dans leur code. A contrario, 73 % déclarent que l’IA n’a introduit que « très peu » ou un « nombre modéré » de vulnérabilités. Et pourtant, 59 % des répondants s’inquiètent de l’introduction de vulnérabilités de sécurité dans leur code par l’IA, et 50 % se disent préoccupés par l’introduction de violations des licences. Pour résumer, les développeurs pensent que l’IA améliore la sécurité de leur code sans introduire beaucoup de nouvelles vulnérabilités, mais ils restent méfiants.
Très peu
132
Un peu
165
Beaucoup
56
Pas du tout
15
Je ne sais pas
9
Non applicable
27
La majorité des entreprises automatisent tout ou partie de leurs mesures de sécurité dans leur pipeline de code. 64 % ont ainsi automatisé l’analyse du code, 61 % la gestion des mises à jour des logiciels, 59 % les tests (unitaires et de sécurité), 58 % les pratiques de codage sécurisées (linters, mise en forme, etc.), et presque une sur deux l’analyse de la configuration de l’infrastructure et des conteneurs. Les répondants expliquent que les outils de sécurité automatisés ont considérablement augmenté le nombre de faux positifs apparaissant dans les rapports de vulnérabilités. 60 % affirment ainsi avoir constaté une hausse des faux positifs, et 30 % une baisse.
En hausse
246
En baisse
121
Je ne sais pas
22
S/O - Nous n’avons pas recours à l’automatisation
15
Ce pourcentage n’est vraiment pas négligeable. 62 % des répondants affirment qu’au moins 25 % des alertes signalées sont en réalité des faux positifs, et 35 % estiment que les faux positifs représentent au moins 50 % des alertes. Ce taux élevé explique sans doute ce qui paraît être un taux de correction des vulnérabilités plutôt faible.
0-25 %
139
26-50 %
110
51-75 %
93
76-100 %
47
Je ne sais pas
15
Snyk DeepCode AI utilise plusieurs modèles d’IA entraînés tout spécialement sur des données de sécurité sélectionnées par des experts pour vous offrir toute la puissance de l’IA sans aucun de ses inconvénients.
Quatrième partie
Dans le cadre de cette analyse, nous avons sélectionné les vulnérabilités qui ont été ignorées par au moins 20 entreprises (sur la base de nos données internes). Java représente la plus grande part des vulnérabilités ignorées, avec 42,5 %. Ce chiffre n’a rien d’étonnant si l’on considère l’étendue du code hérité utilisant ce langage et son système d’empaquetage (fichiers .jar), qui masque fréquemment les vulnérabilités et les dépendances. Le JavaScript, connu pour ses innombrables paquets, dont beaucoup concernent des fonctions ultra spécifiques, est assez logiquement en seconde position, avec 30,6 % des vulnérabilités ignorées. Debian, la distribution Linux, prend la troisième position, loin derrière avec 13,6 %. Cette répartition ne permet pas d’évaluer totalement la surface d’attaque, car Java et JavaScript englobent non seulement le plus grand nombre de vulnérabilités ignorées, mais ces vulnérabilités sont aussi les plus fréquentes. Ainsi, les 34 vulnérabilités les plus souvent ignorées par les entreprises concernent toutes Java et JavaScript.
Debian
13%
alpine
0%
golang
3%
python
6%
js
30%
java
42%
Ruby
0%
Ubuntu
0%
dot.net
1%
Les types des vulnérabilités ignorées par les entreprises donnent des informations précieuses sur la surface d’attaque et les risques acceptés, que ce soit de manière consciente ou non. Le principal type de CVE ignoré par au moins 50 comptes ? Les dénis de service (DoS). Ils représentent 31,3 % des vulnérabilités ignorées. Si elles restent graves, ces attaques sont généralement contrecarrées de manière proactive par le CDN ou l’infrastructure. Assez logiquement, de nombreuses équipes ne les considèrent donc pas comme prioritaires. La désérialisation de données non fiables représente 14,3 % des CVE ignorées par plus de 50 comptes. Ce type regroupe diverses vulnérabilités pouvant toucher différents langages. Il constitue souvent la première étape d’attaques en chaîne ou composées, et constitue donc une vulnérabilité sérieuse. Le troisième type de vulnérabilité le plus courant, la pollution de prototype (12,5 %), concerne principalement la communauté JavaScript.
Exécution de code à distance
3%
Déni de service (DoS)
14%
Désérialisation de données non fiables
14%
Pollution de prototype
12%
Exposition d’informations
7%
Déni de service d’expression régulière (ReDoS)
17%
Traversée de répertoire
2%
Vérification incorrecte de la signature cryptographique
2%
Écriture de fichiers arbitraires
4%
Autre
21%
Cinquième partie
Depuis la naissance de l’open source, la supériorité de sa sécurité face aux logiciels propriétaires fait l’objet de tous les débats. Les vulnérabilités sont publiques, tout comme leurs corrections. Par conséquent, il est possible de suivre le délai de correction à partir des bases de données des vulnérabilités. C’est exactement ce que nous avons fait sur une période recouvrant les quatre dernières années. Notre conclusion ? Le délai de correction moyen des logiciels propriétaires a augmenté depuis 2019, quand les applications open source suivent une tendance inverse. Pour être honnête, les deux types de logiciels réduisent leur délai de correction depuis 2021, mais pour la première fois depuis que nous suivons cet indicateur, les applications open source corrigent plus rapidement leurs vulnérabilités que les applications propriétaires. Cette tendance indique que l’écosystème open source améliore sa réponse aux problèmes de sécurité et propose peu à peu une meilleure sécurité que les solutions propriétaires.
Code open source
Code propriétaire
300
200
100
0
0
100
200
300
2019
2020
2021
2022
Après un pic important, le délai de correction des vulnérabilités critiques et hautement prioritaires a considérablement diminué au cours des deux dernières années. Ce pic pourrait indiquer que l’analyse du code open source était plus fréquente ces deux années, mettant en lumière des vulnérabilités jusque-là invisibles. De 2021 à 2022, le délai de correction moyen pour ces deux types de vulnérabilité a été divisé plus ou moins par deux : -51 % pour les vulnérabilités critiques et -49,4 % pour les vulnérabilités hautement prioritaires. Cette baisse importante peut s’expliquer par différents facteurs, notamment une adoption plus large d’outils de sécurité open source comme la SCA, davantage de fonds et de ressources mobilisés pour la correction des vulnérabilités critiques, et une meilleure reconnaissance de l’importance de la sécurité au sein des projets open source. Quoi qu’il en soit, la tendance est bonne et s’oriente vers une amélioration continue de la sécurité des logiciels open source.
Critique
Élevée
Moyenne
Basse
1 500
1 000
500
0
0
500
1 000
1 500
2018
2019
2020
2021
2022
Le délai de correction des vulnérabilités est variable d’un écosystème open source à l’autre, et c’est au sein des plus importants écosystèmes suivis par Snyk qu’il a le plus baissé. Les réductions les plus fortes sont enregistrées par Java et Python, avec respectivement 50,8 % et 43,4 %. Les cinq écosystèmes ayant réduit leur délai de correction ont atteint une baisse à deux chiffres. Si l’on prend en compte la réduction en jours, Go (147 jours de moins) et Python (115 jours de moins) prennent la tête du classement. Deux écosystèmes ont toutefois régressé. Ainsi, C et Ruby ont connu une hausse de respectivement 144,7 % et 102,1 % du nombre de jours moyens nécessaires pour effectuer une correction, ce qui se traduit par 55 et 49 jours en plus pour chacun de ces écosystèmes. Les écosystèmes open source améliorent leurs délais de sécurisation et, par extension, renforcent la sécurité de la chaîne d’approvisionnement en raccourcissant le temps qui s’écoule entre la publication des vulnérabilités et leur correction.
2021 à 2022
2022 à 2023
400
300
200
100
0
0
100
200
300
400
cpp
.NET
Go
js
java
PHP
python
Ruby
Conclusion
Au cours des dernières années, les entreprises technologiques ont vraiment travaillé sur l’amélioration de la sécurité open source et de la chaîne d’approvisionnement. Elles ont tiré les leçons de la faille Log4Shell en prenant diverses mesures, et notamment en déployant plus d’outils, en renforçant les formations et en multipliant les analyses du code. Pour autant, la marge d’amélioration reste considérable. Un nombre inquiétant d’entreprises fait encore l’impasse sur des technologies de sécurité centrales, comme les analyses SCA et SAST. La sécurité open source a progressé, et en moyenne, la communauté est mieux protégée qu’elle ne l’a jamais été. Ces progrès n’empêchent pas qu’il reste beaucoup à faire. L’adoption de technologies de sécurité pour la chaîne d’approvisionnement, nouvelles ou bien établies, doit être plus systématique, la charge de travail des équipes de sécurité réduite, leurs tâches mieux hiérarchisées et la sécurité de la chaîne d’approvisionnement placée toujours plus au cœur du processus de développement logiciel.
Lisez le rapport de Snyk sur l’état des lieux de la sécurité open source 2023 pour mieux comprendre les risques que vous font courir les vulnérabilités mises sous le tapis et la confusion qui entoure les SBOM, mais aussi prendre connaissance des progrès encourageants de la sécurité open source.